#include <stdio.h>
#include <stdlib.h>
int max(int a, int b);

int main(int argc, char *argv[])
{
  int total, n, i, j;
  int bag[1001][1001];
  int arr[1001], brr[1001]; // 物品体积，物品价值

  scanf("%d%d", &total, &n); // 背包体积，物品个数

  for (i = 1; i <= n; i++)
  {
    scanf("%d%d", &arr[i], &brr[i]);
  }

  for (i = 1; i <= n; i++)
  {
    for (j = 1; j <= total; j++)
    {
      if (arr[i] <= j)
      {
        // 如果当前物品的体积小于等于背包的容量，则计算将该物品放入背包和不放入背包两种情况下的最大价值，并将结果存储在 bag[i][j] 中。
        bag[i][j] = max(brr[i] + bag[i][j - arr[i]], bag[i - 1][j]);
      }
      else
        // 如果当前物品的体积大于背包的容量，则将 bag[i][j] 的值设为上一个物品在相同容量下的最大价值。
        bag[i][j] = bag[i - 1][j];
    }
  }
  printf("%d", bag[n][total]);
  return 0;
}

int max(int a, int b)
{
  return (a > b) ? a : b;
}
